//
// Created by Martin on 2021/12/25.
//

#include <iostream>
#include <stdio.h>
using namespace std;

/**
 * 最短时间情况：
 * 每只蚂蚁选择距离最近的方向，所有蚂蚁都掉落取决于最后掉下去那只
 *
 * 最长时间情况：
 * 每只蚂蚁选择距离最远的方向，所有蚂蚁都掉落取决于最后掉下去那只
 */
void solve(int &L, int &n, int x[])
{
    int minT = 0; // 最短时间
    int maxT = 0; // 最长时间
    for (int i = 0; i < n; ++i) {
        int lessNum = min(x[i], L - x[i]);
        int greaterNum = max(x[i], L - x[i]);
        minT = max(minT, lessNum);
        maxT = max(maxT, greaterNum);
    }

    printf("%d %d\n", minT, maxT);
}

/**
 * 挑战程序设计竞赛 1.6.2
 */
int main()
{
    int num;
    scanf("%d", &num);

    while (num-- > 0) {
        int L, n;
        if(scanf("%d %d", &L, &n) == EOF)
            break;
        if (L <= 0 || n <= 0) continue;

        int *x = new int[n];
        for (int i = 0; i < n; ++i) {
            scanf("%d", &x[i]);
        }

        solve(L, n, x);
        delete[] x;
    }
    return 0;
}